/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package fr.sorbonne.inf5.yams.model;

import fr.sorbonne.inf5.yams.model.combinaison.CarreCombinaison;
import fr.sorbonne.inf5.yams.model.combinaison.CinqCombinaison;
import fr.sorbonne.inf5.yams.model.combinaison.Combinaison;
import fr.sorbonne.inf5.yams.model.combinaison.DeuxCombinaison;
import fr.sorbonne.inf5.yams.model.combinaison.FullCombinaison;
import fr.sorbonne.inf5.yams.model.combinaison.GrandeSuiteCombinaison;
import fr.sorbonne.inf5.yams.model.combinaison.InferieurCombinaison;
import fr.sorbonne.inf5.yams.model.combinaison.PetiteSuiteCombinaison;
import fr.sorbonne.inf5.yams.model.combinaison.QuatreCombinaison;
import fr.sorbonne.inf5.yams.model.combinaison.SixCombinaison;
import fr.sorbonne.inf5.yams.model.combinaison.SuperieurCombinaison;
import fr.sorbonne.inf5.yams.model.combinaison.TroisCombinaison;
import fr.sorbonne.inf5.yams.model.combinaison.UnCombinaison;
import fr.sorbonne.inf5.yams.model.combinaison.YamsCombinaison;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

/**
 * Cette classe permet d'instancier un jeu de yams avec 5 dés numérique de 6 faces
 * de 1 à 6
 * Avec les combinaison suivantes UnCombinaison, DeuxCombinaison, TroisCombinaison
 * QuatreCombinaison, CinqCombinaison, SixCombinaison -> pour la partie haute
 *
 * Superieur Inferieur pour la partie centrale
 *
 * Carree, Full, PetiteSuite, GrandeSuite et yams pour la partie basse
 * @author Oukherfellah Riad
 * @author Dubos Romain
 */
public class CreationJeuYams {    

    /**
     * Renvoie un Objet Yam's intancié avec les caractéristiques citée dans la javadoc
     * de la classe
     * @return
     */
    public static Yams renvoyerJeuYams(){

        //Initialisation des Faces pour les Dés
        List<InterfaceFace> listeFace = new ArrayList<InterfaceFace>();
        for(int i=1 ; i<=6; i++){
            listeFace.add(new FaceNumerique(i));
        }
        //Initialisation des Dés
        List<De> listeDe = new ArrayList<De>();
        for(int i=0; i<5; i++){
            listeDe.add(new De(listeFace));
        }

        //Initialisation des Combinaison
        Map<Combinaison, String> combinaisons = new LinkedHashMap<Combinaison, String>();
        combinaisons.put(new UnCombinaison(), Score.PARTIE_HAUTE);
        combinaisons.put(new DeuxCombinaison(), Score.PARTIE_HAUTE);
        combinaisons.put(new TroisCombinaison(), Score.PARTIE_HAUTE);
        combinaisons.put(new QuatreCombinaison(), Score.PARTIE_HAUTE);
        combinaisons.put(new CinqCombinaison(), Score.PARTIE_HAUTE);
        combinaisons.put(new SixCombinaison(), Score.PARTIE_HAUTE);

        combinaisons.put(new SuperieurCombinaison(), Score.PARTIE_CENTRALE);
        combinaisons.put(new InferieurCombinaison(), Score.PARTIE_CENTRALE);

        combinaisons.put(new CarreCombinaison(), Score.PARTIE_BASSE);
        combinaisons.put(new FullCombinaison(), Score.PARTIE_BASSE);
        combinaisons.put(new PetiteSuiteCombinaison(), Score.PARTIE_BASSE);
        combinaisons.put(new GrandeSuiteCombinaison(), Score.PARTIE_BASSE);
        combinaisons.put(new YamsCombinaison(), Score.PARTIE_BASSE);



        Yams yams = new Yams(listeDe, combinaisons);
        return yams;
    }

}
